import request from "@/utils/request.js"

/**
 * 用户注册函数
 *
 * 该函数用于向服务器发送用户注册请求通过POST方法提交用户信息到指定的API端点
 *
 * @param {Object} data - 包含用户注册所需信息的对象，如用户名、密码、邮箱等
 * @returns {Promise} - 返回一个Promise对象，用于处理异步请求的结果
 */
export const userRegister = (data) => {
  return request.post('/user/user/register', data)
}

/**
 * 用户通过邮箱注册
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const userRegisterByEmail = (data) => {
  return request.post('/user/user/register/email', data)
}

/**
 * 用户登录函数
 *
 * 该函数用于向服务器发送用户登录请求通过POST方法提交用户信息到指定的API端点
 *
 * @param {Object} data - 包含用户登录所需信息的对象，如用户名、密码等
 * @returns {Promise} - 返回一个Promise对象，用于处理异步请求的结果
 */
export const userLogin = (data) => {
  return request.post('/user/user/login', data)
}

/**
 * 获取用户信息
 *
 * 此函数通过发送GET请求到'/user/user/info'端点，异步获取当前用户的信息
 * 它没有参数，并返回一个Promise对象，该对象解析为用户信息的对象
 */
export const queryUserInfo = () => {
  return request.get('/user/user/info')
}

/**
 * 修改用户信息
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const editUserInfo = (data) => {
  return request.put('/user/user', data)
}

/**
 * 用户退出
 */
export const userLogout = () => {
  return request.post('/user/user/logout')
}

/**
 * 根据值搜索用户
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const searchUserByValue = (data) => {
  return request.post('/user/user/search', data)
}

/**
 * 根据ID查询用户
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const queryUserById = (data) => {
  return request.get('/user/user/' + data)
}

/**
 * 关注用户
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const followUser = (data) => {
  return request.post('/user/user/follow/' + data)
}

/**
 * 取消关注用户
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const unfollowUser = (data) => {
  return request.post('/user/user/unfollow/' + data)
}

/**
 * 分页查询粉丝
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const pageQueryFansById = (data) => {
  return request.post('/user/user/fans/page', data)
}

/**
 * 分页查询关注
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const pageQueryFollowById = (data) => {
  return request.post('/user/user/follows/page', data)
}

/**
 * 设置APP权限
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const setAppAuth = () => {
  return request.put('/user/user/app')
}

/**
 * 设置收藏权限
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const setCollectAuth = () => {
  return request.put('/user/user/collect')
}

/**
 * 重置密码
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const resetPassword = (data) => {
  return request.put('/user/user/pw', data)
}

/**
 * 查询用户token数量
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const queryUserTokenNum = () => {
  return request.get('/user/token')
}

/**
 * 赠送新用户tokens
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const giveNewUserToken = () => {
  return request.post('/user/token')
}

/**
 * 判断用户tokens是否存在
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const judgeToken = () => {
  return request.get('/user/token/judge')
}

/**
 * 保存用户建议
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export const saveUserSuggest = (data) => {
  return request.post('/user/suggest', data)
}
